#include "gui/gui.h"
#include "gui/gui_object.h"
#include "gui/gui_controller.h"

Gui* Gui::gui = NULL;

//////////////////////////////////////////////////
//  Gui::Gui()
//////////////////////////////////////////////////
Gui::Gui()
{
    guiCtrl = GuiController::get();
}

//////////////////////////////////////////////////
//  void Gui::init()
//////////////////////////////////////////////////
void Gui::init(sf::RenderWindow* window, Camera* camera, City* city)
{
    // Set gui style
    desktop.LoadThemeFromFile("materials/gui/gui.theme");

    guiCtrl->init(window, desktop, camera, city);
}

//////////////////////////////////////////////////
//  void Gui::eventHandle(sf::Event event)
//////////////////////////////////////////////////
void Gui::eventHandle(sf::Event event)
{
    desktop.HandleEvent(event);
}


//////////////////////////////////////////////////
//  void Gui::update(double dt)
//////////////////////////////////////////////////
void Gui::update(double dt)
{
    desktop.Update(dt);
    guiCtrl->update(dt);
}

//////////////////////////////////////////////////
//  void Gui::render(sf::RenderWindow& window)
//////////////////////////////////////////////////
void Gui::render(sf::RenderWindow& window)
{
    sfgui.Display(window);
}

//////////////////////////////////////////////////
//  Gui* Gui::get()
//////////////////////////////////////////////////
Gui* Gui::get()
{
    if (Gui::gui == NULL)
    {
        Gui::gui = new Gui;
    }

    return Gui::gui;
}
